if we use pointers, we should free the previous pointer first (if it
authorKristian Rietveld <kris@gtk.org>
Mon, 3 Dec 2001 21:20:12 +0000 (21:20 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Mon, 3 Dec 2001 21:20:12 +0000 (21:20 +0000)
Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>

        * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
        we use pointers, we should free the previous pointer first (if
        it exists), before we set a new pointer. (#64726)

        * gtk/gtktreeprivate.h: get rid of cursor_drag

        * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check
        for cursor_drag
        (gtk_tree_view_bin_expose): don't directly return in the while
        loop
        (gtk_tree_view_class_init): indentend expanders by default
        (gtk_tree_view_header_focus): only give the button focus
        if it's clickable, visible and the column is reorderable
        (#65539)

        * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
        create and free cursor

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktreedatalist.c
gtk/gtktreeprivate.h
gtk/gtktreeview.c
gtk/gtktreeviewcolumn.c

index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index f5769b8ea7604dece4acfcf735383194273e32aa..57a8c41cce408b6b472957795a94b2c5c55a75a2 100644 (file)
@@ -1,3 +1,23 @@
+Mon Dec  3 21:15:59 2001  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreedatalist.c (_gtk_tree_data_list_value_to_node): if
+       we use pointers, we should free the previous pointer first (if
+       it exists), before we set a new pointer. (#64726)
+
+       * gtk/gtktreeprivate.h: get rid of cursor_drag
+
+       * gtk/gtktreeview.c (gtk_tree_view_unrealize): remove check     
+       for cursor_drag
+       (gtk_tree_view_bin_expose): don't directly return in the while
+       loop
+       (gtk_tree_view_class_init): indentend expanders by default
+       (gtk_tree_view_header_focus): only give the button focus
+       if it's clickable, visible and the column is reorderable
+       (#65539)
+
+       * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button):
+       create and free cursor
+
 Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
index d47874cfe91d8007f9d4305082ca91409bbfd9e9..ca11a4ecd0ce2ad83c3295835faafba4be8ba85e 100644 (file)
@@ -196,12 +196,18 @@ _gtk_tree_data_list_value_to_node (GtkTreeDataList *list,
       list->data.v_double = g_value_get_double (value);
       break;
     case G_TYPE_STRING:
+      if (list->data.v_pointer)
+       g_free (list->data.v_pointer);
       list->data.v_pointer = g_value_dup_string (value);
       break;
     case G_TYPE_OBJECT:
+      if (list->data.v_pointer)
+       g_object_unref (list->data.v_pointer);
       list->data.v_pointer = g_value_dup_object (value);
       break;
     case G_TYPE_BOXED:
+      if (list->data.v_pointer)
+       g_boxed_free (G_VALUE_TYPE (value), list->data.v_pointer);
       list->data.v_pointer = g_value_dup_boxed (value);
       break;
     default:
index 05801954eb1b58545acc9d4a79660bd0fa29ba4b..241d18793b35d34e811bcfd79a7a540ff88f082f 100644 (file)
@@ -117,7 +117,6 @@ struct _GtkTreeViewPrivate
   GtkTreeRowReference *cursor;
 
   /* Column Resizing */
-  GdkCursor *cursor_drag;
   GdkGC *xor_gc;
   gint drag_pos;
   gint x_drag;
index 329fe05f0a041bfd0e04e4624296a5faf18c75e8..a60a041a84375780b1b7fa564c52515028da0bce 100644 (file)
@@ -616,7 +616,7 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
                                           g_param_spec_boolean ("indent_expanders",
                                                                 _("Indent Expanders"),
                                                                 _("Make the expanders indented."),
-                                                                FALSE,
+                                                                TRUE,
                                                                 G_PARAM_READABLE));
   /* Signals */
   widget_class->set_scroll_adjustments_signal =
@@ -1349,12 +1349,6 @@ gtk_tree_view_unrealize (GtkWidget *widget)
       tree_view->priv->drag_highlight_window = NULL;
     }
 
-  if (tree_view->priv->cursor_drag)
-    {
-      gdk_cursor_destroy (tree_view->priv->cursor_drag);
-      tree_view->priv->cursor_drag = NULL;
-    }
-
   if (tree_view->priv->xor_gc)
     {
       gdk_gc_destroy (tree_view->priv->xor_gc);
@@ -2835,9 +2829,8 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                  node = tree->parent_node;
                  tree = tree->parent_tree;
                  if (tree == NULL)
-                   /* we've run out of tree.  It's okay to return though, as
-                    * we'd only break out of the while loop below. */
-                   return TRUE;
+                   /* we should go to done to free some memory */
+                   goto done;
                  has_parent = gtk_tree_model_iter_parent (tree_view->priv->model,
                                                           &iter,
                                                           &parent_iter);
@@ -2852,6 +2845,7 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
     }
   while (y_offset < event->area.height);
 
+ done:
   if (cursor_path)
     gtk_tree_path_free (cursor_path);
 
@@ -3993,6 +3987,8 @@ gtk_tree_view_header_focus (GtkTreeView      *tree_view,
   while (last_column)
     {
       if (GTK_WIDGET_CAN_FOCUS (GTK_TREE_VIEW_COLUMN (last_column->data)->button) &&
+         GTK_TREE_VIEW_COLUMN (last_column->data)->clickable &&
+         GTK_TREE_VIEW_COLUMN (last_column->data)->reorderable &&
          GTK_TREE_VIEW_COLUMN (last_column->data)->visible)
        break;
       last_column = last_column->prev;
@@ -4007,6 +4003,8 @@ gtk_tree_view_header_focus (GtkTreeView      *tree_view,
   while (first_column)
     {
       if (GTK_WIDGET_CAN_FOCUS (GTK_TREE_VIEW_COLUMN (first_column->data)->button) &&
+         GTK_TREE_VIEW_COLUMN (first_column->data)->clickable &&
+         GTK_TREE_VIEW_COLUMN (last_column->data)->reorderable &&
          GTK_TREE_VIEW_COLUMN (first_column->data)->visible)
        break;
       first_column = first_column->next;
index 03ba695f8fb2445532ecf3efbac1ec1211bd2243..ecbd58c74132bf028e03b6db43bfd931a87382d0 100644 (file)
@@ -929,7 +929,6 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
                     GDK_KEY_PRESS_MASK);
   attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y;
   attr.cursor = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW);
-  tree_view->priv->cursor_drag = attr.cursor;
 
   attr.y = 0;
   attr.width = TREE_VIEW_DRAG_WIDTH;
@@ -942,6 +941,8 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
   gdk_window_set_user_data (column->window, tree_view);
 
   gtk_tree_view_column_update_button (column);
+
+  gdk_cursor_unref (attr.cursor);
 }
 
 void